data<-read.table(header = TRUE,text="no1  no2	no3	no4	id
1  2	3	4	a
1	2	3	5	b
6	7	8	5	c
10	11	12	13	d
10	11	11	11	e
2	11	13	15	f")
i=1
j=1
for(i in 1:(ncol(data)-1)){
  data[,i]<-as.character(data[,i])
}
list<-vector("list",4)
#构建集合索引
for(i in 1:(ncol(data)-1)){
  tmp<-table(data[,i])
  tmp2<-names(tmp)[tmp>1]
  for(j in 1:length(tmp2))
    list[[i]][[j]]<-data$id[data[,i]==tmp2[j]]
}
#1级聚合
list2<-vector("list",nrow(data))
for(i in 1:nrow(data)){
  for(j in 1:length(list)){
    for(k in 1:length(list[[j]])){
      if(data$id[i]==list[[j]][[k]][1])
        list2[[i]]<-c(list2[[i]],list[[j]][[k]])
    }
  }
  if(!is.null(list2[[i]])){
    list2[[i]]<-unique(list2[[i]])
  }
  else{
    list2[[i]]<-0
  }
}
#list2[[1]]<-NULL
#2级聚合
#list2<-list2t

for(i in 1:length(list2)){
  if(list2[[i]][1]!=0){
    list3[[k]]<-list2[[list2[[i]][1]]]
    for(j in 2:length(list2[[i]])){
      list3[[k]]<-c(list3[[k]],list2[[list2[[i]][j]]])
      list2[[list2[[i]][j]]][1]<-0
    }
    list2[i][1]<-0
    list3[[k]]<-unique(list3[[k]])
    list3[[k]]<-list3[[k]][list3[[k]]!=0]
    k=k+1
  }
}

